import globals from "globals"
import tseslint from "typescript-eslint"
import pluginVue from "eslint-plugin-vue"

/** @type {import('eslint').Linter.Config[]} */
export default [
    { files: ["**/*.{js,mjs,cjs,ts,vue}"] },
    { languageOptions: { globals: globals.browser } },
    ...tseslint.configs.recommended,
    ...pluginVue.configs["flat/essential"],
    {
        files: ["**/*.vue"],
        languageOptions: { parserOptions: { parser: tseslint.parser } }
    },
    {
        extends: ["./types/.eslintrc-auto-import.json"]
    },
    {
        rules: {
            // 禁止使用 var 定义变量，使用 let 或 const
            "no-var": "error",
            // 组件必须使用 a-b-c 格式
            "vue/multi-word-component-names": "off",
            // 禁止定义未使用的变量
            "@typescript-eslint/no-unused-vars": "off",
            // 禁止空函数
            "@typescript-eslint/no-empty-function": "off",
            // 禁止使用 any 类型
            "@typescript-eslint/no-explicit-any": "off",
            // 禁止使用未定义的变量
            "@typescript-eslint/no-use-before-define": "off",
            // 禁止使用 @ts-ignore
            "@typescript-eslint/ban-ts-comment": "off",
            // 禁止使用特定类型
            "@typescript-eslint/ban-types": "off"
        }
    }
]
